Streamline workspace create & settings form [INS-2621]#9940
Conversation
✅ Circular References ReportGenerated at: 2026-06-05T11:59:01.310Z Summary
Click to view all circular references in PR (8)Click to view all circular references in base branch (8)Analysis✅ No Change: This PR does not introduce or remove any circular references. This report was generated automatically by comparing against the |
| <Input | ||
| placeholder={workspaceData.name ? safeToUseInsomniaFileName(workspaceData.name) : 'name'} | ||
| className="w-full min-w-[3ch] outline-hidden [grid-area:input] placeholder:italic focus:outline-hidden" | ||
| className="w-full outline-hidden [grid-area:input] placeholder:italic focus:outline-hidden" |
There was a problem hiding this comment.
@godfrzero In workspace-settings-modal.tsx the invisible width-measuring span uses pointer-events-none truncate opacity-0, but the equivalent span here in new-workspace-modal.tsx keeps w-min (pointer-events-none w-min truncate opacity-0).
There was a problem hiding this comment.
I've removed it from here as well. It shouldn't make a difference in practice since min-content and the default would behave the same if we're disallowing spaces and replacing other characters like . with _.
| className="w-full outline-hidden [grid-area:input] placeholder:italic focus:outline-hidden" | ||
| /> | ||
| <span className="-z-10 w-min truncate opacity-0 [grid-area:input]"> | ||
| <span className="pointer-events-none w-min truncate opacity-0 [grid-area:input]"> |
There was a problem hiding this comment.
Replaced with pointer-events: none rather than messing with the stacking order since the intent here is to let the user "click through" the element.
32f149e to
682ce9e
Compare
The validate callback parameter shadowed the outer `fileName` variable (which holds the original name with extension). The folder-children filter compared against the bare input value instead of the full `fileName`, so the current file was never excluded — causing a false "already exists" error whenever only the workspace name was edited. Renaming the parameter to `inputValue` restores access to the outer `fileName` so the filter correctly excludes the existing file before checking for collisions. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The invisible sizer span that drives the CSS grid column width had static content (the initial filename), so the column never resized as the user typed and the .yaml suffix stayed at a fixed position. Switching the TextField to controlled mode (value + onChange) lets the sizer span reflect the live input value, causing the .yaml label to follow the text as characters are added or removed. Also removed the excess pr-7 right-padding since the extension is now positioned by the grid rather than by padding offset. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Apply safeToUseInsomniaFileName to the TextField value prop so the displayed and submitted value is always sanitized, matching the pattern used in new-workspace-modal. Previously the controlled value reflected raw input directly, bypassing character replacement. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…workspace settings filename input
477896e to
a990046
Compare

This PR addresses a few usability issues in the "Create a new " and " Settings" modals for Git Sync projects:
Changes were manually tested by comparing v12.6.0-beta.0 and a local dev build. Automated tests were not added for these because unit tests wouldn't effectively test either case and the cost of failure seems too low to add e2e/smoke tests for these. Happy to give the tests a go if that assessment doesn't feel right though.